#include <iostream>
#include <cmath>
using namespace std;    
#define int long long
double W, w, m;
double func(double x) {
    double power = pow(1 + x, m);
    if (isinf(power) || isnan(power)) return 1e18; // 处理溢出
    double t = (W * power * x) / (power - 1);
    if (isinf(t) || isnan(t)) return 1e18;
    return t;
}
void print(double x) {
    int t = x * 10000;
    if(t % 10 >= 5) {
        t++;
    }
    printf("%.1lf", t / 100.0);
}
signed main() {

    cin >> W >> w >> m;
    double l = 0, r = 3.0;
    while(r - l > 1e-10) {
        double mid = l + (r - l) / 2.0;
        if(func(mid) > w) {
            r = mid;
        }else if(func(mid) == w) {
            print(mid);
            return 0;
        }else {
            l = mid;
        }
    }
    print((l + r) / 2.0);
    return 0;
}

// 更好的写法了
// #include<bits/stdc++.h>
// using namespace std;
// double n,m,k,l,r;
// bool pd(double x){//判断当前答案是否满足 
// 	return (pow(1.0/(1.0+x),k)>=1-n/m*x);//pow函数，上文已讲
// }
// int main(){
// 	cin>>n>>m>>k;
//    	///////////////////////二分模板
// 	l=0;r=10;//月利率可能大于1
// 	while(r-l>=0.0001){//注意精度问题 
// 		double mid=(l+r)/2;
// 		if(pd(mid))r=mid;
// 		else l=mid;
// 	}
//    	///////////////////////
// 	cout<<fixed<<setprecision(1)<<l*100;//输出一位小数哦 
// 	return 0;
// } 
